Datuve :: Forums :: Arhīvs :: Nospiest pogu citā programmā[Delphi]

Datuve

Mana Datuve

Reģistrācija | Noteikumi | Paroles atjaunošana



Forums

Ieskaties


Raksti

Lietotāji online

Lietotāji online: 90

Reģistrētie lietotāji online: 0

Viesi online: 90

Datuve.lv video
Top.LV

Nospiest pogu citā programmā[Delphi]

Ievietoja: BlowMagnum @ 2008.02.09 19:58  

Nu pagaidām rakājoties pa googli atradu šādu paraugu:

var
 h: HWND;
begin
 h := FindWindow(nil, 'Main Form Caption');
 if h <> 0 then PostMessage(h, WM_CLOSE, 0, 0)

Tas kods aizver formu, pamēģināju WM_CLOSE aizvietot ar WM_LBUTTONDOWN, bet tad izmet apmēram šadu erroru, 'The instruction at 123xx00010 could not read data at 0910xx1231 '

Kāds kods būtu, lai  kad atveras logs 'Main Form Caption' nospiežas poga, kura atrodas uz tās formas?

Komentāri:

#1 BlowMagnum @ 2008.02.09 22:32

nuu, paris stundas taka pagāja, vai tiešām neviens nezin?

#2 LMN @ 2008.02.10 09:25

Pāris stundu laikā jau būtu atradis strādājošu piemēru un izlasījis informāciju par to, kādi eventi notiek pie pogas nospiešanas, nevis bumpojis topiku.
Pie tam, reti kura poga ir taisīta tā, lai reaģētu uz mouse_down eventu - windows programmēšanas labais stils prasa, lai poga reaģētu tikai uz mouse_up - t.i., kad lietotājs ir nospiedis un atlaidis peles pogu virs pogas. (Reaģētu - izpildītu kodu).

Es izmantoju šādu vienrindīti:
SendMessage(pogas_tureklis, 0x00F5, 0, 0);
0x00F5 == BM_CLICK.
Kā noskaidrot pogas handli - lai paliek kā mājas uzdevums...

#3 BlowMagnum @ 2008.02.10 11:01

SendMessage(pogas_tureklis, 0x00F5, 0, 0);

Kā saprast pogas_tureklis? Vai tas ir logs uz kura atrodas poga?
Un tāpat vien, interses pēc, kas ir  0x00F5 ?

#4 LMN @ 2008.02.10 11:38

pogas_tureklis ir pogas kontroles, jeb pogas loga atslēga, pēc kuras Windows to identificē. Analoģiski, kā Tavā piemērā, "h". Visiem logiem ir šādas atslēgas (handle). Visas grafiskās kontroles ir logi, iespējams, tāpēc to arī sauc par Windows.
0x00F5 ir skaitliska vērtība heksadecimālā kodējumā (funkcijas SendMessage parametrs), kas apzīmē logam nosūtāmo komandu. Tev vajadzētu to zināt, jo piemērā, ko esi ievietojis, tiek izmantota analoģiska konstante - WM_CLOSE.

Ieteicamā literatūra - skaitīšanas sistēmas, referenču lasīšanas un informācijas meklēšanas apgūšana, WinAPI pamati.